home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Utilities / RandomDot 1.0.2 / Random Dot Src ƒ / _r / RandomDot.r next >
Encoding:
Text File  |  1994-10-27  |  17.9 KB  |  526 lines  |  [TEXT/KAHL]

  1. /* RandomDot.r
  2.     by David Phillip Oster October 1994 oster@netcom.com
  3.     for:
  4.     Stuart Inglis singlis@waikato.ac.nz
  5.     Department of Computer Science
  6.     University of Waikato, Hamilton, New Zealand
  7. */
  8. #include "Types.r"
  9. #include "SysTypes.r"
  10. #include "BalloonTypes.r"
  11. #include "::_h:RandomDotRes.h"
  12.  
  13. /* used to offset STR#s for help resources.
  14.  */
  15. #define hMenuBase    2000
  16. #define hDlogBase    3000
  17.  
  18. include "RandomDot.RESOURCES";
  19.  
  20. #define kPopUpProc        1008
  21.  
  22. /*    *** CNTLs
  23.  */
  24. resource 'CNTL' (128, purgeable, preload) {    /* a convenient way to make a scrollbar. */
  25.     {0, -116, 40, -100},
  26.     0,
  27.     -1,
  28.     0,
  29.     0,
  30.     scrollBarProc,
  31.     0,
  32.     ""
  33. };
  34.  
  35. /* 128k ROM and newer window template
  36.  */
  37. resource 'WIND' (rWin, purgeable) {
  38.     {40, 40, 300, 472},
  39.     zoomDocProc,
  40.     invisible,
  41.     -1,
  42.     0x0,
  43.     untitled
  44. };
  45.  
  46. resource 'DLOG' (rAbout, purgeable) {
  47.     {80, 66, 282, 476},
  48.     dBoxProc,
  49.     invisible,
  50.     noGoAway,
  51.     0x0,
  52.     rAbout,
  53.     "About"
  54. };
  55.  
  56.  
  57. resource 'DITL' (rAbout, purgeable) {{
  58.     /* [1] */    {153, 326, 173, 384},    Button {    enabled,    "OK"    },
  59.     /* [2] */    {124, 326, 144, 384},    Button {    enabled,    "Help"    },
  60.     /* [3] */    {12, 83,  49, 376},        StaticText {enabled,    "Random Dot: Version 1.0.2. A program to make random dot autostereograms."    },
  61.     /* [4] */    {49, 13, 112, 376},        StaticText {enabled,    "Copyright © by David Phillip Oster, 1994, \nAll Rights Reserved. \nSee “Random Dot Help” on the “?” menu for more information."    },
  62.     /* [5] */    {117, 13, 183, 313},    StaticText {enabled,    "See also “Displaying 3-D Images: Algorithms for Single-Image Random Dot Stereograms” Harold W. Thimbleby, Stuart Inglis, & Ian H. Witten, Computer October 1994"    },
  63.     /* [6] */    {13, 30, 45, 62},        Icon       {enabled, 128 }
  64. }};
  65.  
  66.  
  67. resource 'dctb' (rAbout, purgeable) {{
  68.     wContentColor, 48059, 48059, 48059,
  69.     wFrameColor, 0, 0, 0,
  70.     wTextColor, 0, 0, 0,
  71.     wHiliteColor, 0, 0, 0,
  72.     wTitleBarColor, 65535, 65535, 65535
  73. }};
  74.  
  75. resource 'ALRT' (rError, "Error", purgeable) {
  76.     {56, 64, 184, 438},
  77.     rError,
  78.     {    OK, visible, sound1,
  79.         OK, visible, sound1,
  80.         OK, visible, sound1,
  81.         OK, visible, sound1    
  82. }};
  83.  
  84. resource 'DITL' (rError, "Error", purgeable) {{
  85.     {98, 300, 118, 360},    Button {    enabled,    "OK"    },
  86.     {9, 55, 93, 360},    StaticText {    disabled,    "^0  (^1)"    },
  87.     {9, 12, 41, 44},    Icon {        disabled,        0    }
  88. }};
  89.  
  90. resource 'DLOG' (rProgress, "Progress", purgeable) {
  91.     {150, 120, 233, 426},
  92.     movableDBoxProc,
  93.     invisible,
  94.     noGoAway,
  95.     0x1,
  96.     rProgress,
  97.     ""
  98. };
  99.  
  100. resource 'DITL' (rProgress, "Progress", purgeable) {{
  101.     {25, 16, 43, 290},    UserItem    {disabled},
  102.     {52, 222, 73, 287},    Button         {enabled,"Cancel"},
  103.     {7, 16, 20, 293},    StaticText    {disabled,""}
  104. }};
  105.  
  106. resource 'dctb' (rProgress, purgeable) {{
  107. }};
  108.  
  109. /* change to dBoxProc before we ship.
  110.  */
  111. resource 'DLOG' (rHelp, "Help", purgeable) {
  112.     {30, 96, 340, 402},
  113.     dBoxProc,
  114.     invisible,
  115.     noGoAway,
  116.     0x1,
  117.     rHelp,
  118.     "Help"
  119. };
  120.  
  121. resource 'DITL' (rHelp, "Help", purgeable) {{
  122.     {281, 231, 302, 296},    Button         {enabled,"OK"},
  123.     {4, 7, 274, 297},    UserItem    {disabled}
  124. }};
  125.  
  126.  
  127. #define kAllItems    0x7FFFFFFF
  128. #define kItem1        (1 << (1 - 1))
  129. #define kItem2        (1 << (2 - 1))
  130. #define kItem3        (1 << (3 - 1))
  131. #define kItem4        (1 << (4 - 1))
  132. #define kItem5        (1 << (5 - 1))
  133. #define kItem6        (1 << (6 - 1))
  134. #define kItem7        (1 << (7 - 1))
  135. #define kItem8        (1 << (8 - 1))
  136. #define kItem9        (1 << (9 - 1))
  137.  
  138. resource 'MENU' (kAppleMenu, "kAppleMenu") {
  139.     kAppleMenu,
  140.     textMenuProc,
  141.     0x7FFFFFFD,
  142.     enabled,
  143.     apple,
  144.     {
  145.         "About Random Dot…", noIcon, noKey, noMark, plain,
  146.         "-", noIcon, noKey, noMark, plain
  147. }};
  148.  
  149. #define kAppleHmnu hMenuBase+kAppleMenu
  150. resource 'STR#' (kAppleHmnu, purgeable) {{
  151.     /* 1 */    "The Apple menu contains commands for bringing up items in the Apple Menu Item folder in your System Folder.",
  152.     /* 2 */    "This brings up a dialog box with information about this program."
  153. }};
  154.  
  155. /* The 'hmnu' resource connects menu items to STR# items.
  156.  */
  157. resource 'hmnu' (kAppleMenu, purgeable) {
  158.     HelpMgrVersion,
  159.     hmDefaultOptions,
  160.     0,    /* balloon def id */
  161.     0,    /* var code, hang right */
  162.     HMSkipItem {},    /* default item */
  163.     {
  164.     HMStringResItem {kAppleHmnu, 1, kAppleHmnu, 1, kAppleHmnu, 1, kAppleHmnu, 1 },
  165.     HMStringResItem {kAppleHmnu, 2, kAppleHmnu, 2, kAppleHmnu, 2, kAppleHmnu, 2 }
  166. }};
  167.  
  168. resource 'MENU' (kFileMenu, "kFileMenu") {
  169.     kFileMenu,
  170.     textMenuProc,
  171.     kAllItems - (kItem3|kItem6|kItem9 | (kItem2|kItem4|kItem5|kItem8)),
  172.     enabled,
  173.     "File",
  174.     {
  175.         "Open…", noIcon, "O", noMark, plain,
  176.         "Close", noIcon, "W", noMark, plain,
  177.         "-", noIcon, noKey, noMark, plain,
  178.         "Save", noIcon, "S", noMark, plain,
  179.         "Save As…", noIcon, noKey, noMark, plain,
  180.         "-", noIcon, noKey, noMark, plain,
  181.         "Page Setup…", noIcon, noKey, noMark, plain,
  182.         "Print", noIcon, "P", noMark, plain,
  183.         "-", noIcon, noKey, noMark, plain,
  184.         "Quit", noIcon, "Q", noMark, plain
  185. }};
  186.  
  187. #define kFileHmnu hMenuBase+kFileMenu
  188. resource 'STR#' (kFileHmnu, purgeable) {{
  189.     /* 1 */    "The File menu contains commands for the general operation of this program.",
  190.     /* 2 */    "Open\n\nOpens a PICT or a PGM file.",
  191.     /* 3 */    "Close\n\nCloses the frontmost window.",
  192.     /* 4 */    "Save\n\nSaves the frontmost window under the most recently saved name.",
  193.     /* 5 */    "Save As\n\nSaves the frontmost window under a new saved name.",
  194.     /* 6 */    "Page Setup\n\nbrings up a dialog box of for setting up the printer.",
  195.     /* 7 */    "Print\n\nbrings up a dialog box of printing.",
  196.     /* 8 */    "Quit\n\nQuits this program."
  197. }};
  198.  
  199. /* The 'hmnu' resource connects menu items to STR# items.
  200.  */
  201. resource 'hmnu' (kFileMenu, purgeable) {
  202.     HelpMgrVersion,
  203.     hmDefaultOptions,
  204.     0,    /* balloon def id */
  205.     0,    /* var code, hang right */
  206.     HMSkipItem {},    /* default item */
  207.     {
  208.     HMStringResItem {kFileHmnu, 1, kFileHmnu, 1, kFileHmnu, 1, kFileHmnu, 1 },
  209.     HMStringResItem {kFileHmnu, 2, kFileHmnu, 2, kFileHmnu, 2, kFileHmnu, 2 },
  210.     HMStringResItem {kFileHmnu, 3, kFileHmnu, 3, kFileHmnu, 3, kFileHmnu, 3 },
  211.     HMSkipItem {},
  212.     HMStringResItem {kFileHmnu, 4, kFileHmnu, 4, kFileHmnu, 4, kFileHmnu, 4 },
  213.     HMStringResItem {kFileHmnu, 5, kFileHmnu, 5, kFileHmnu, 5, kFileHmnu, 5 },
  214.     HMSkipItem {},
  215.     HMStringResItem {kFileHmnu, 6, kFileHmnu, 6, kFileHmnu, 6, kFileHmnu, 6 },
  216.     HMStringResItem {kFileHmnu, 7, kFileHmnu, 7, kFileHmnu, 7, kFileHmnu, 7 },
  217.     HMSkipItem {},
  218.     HMStringResItem {kFileHmnu, 8, kFileHmnu, 8, kFileHmnu, 8, kFileHmnu, 8 }
  219. }};
  220.  
  221. resource 'MENU' (kEditMenu, "kEditMenu") {
  222.     kEditMenu,
  223.     textMenuProc,
  224.     kAllItems - (kItem2 |(kItem1|kItem3|kItem4|kItem5|kItem6)),
  225.     enabled,
  226.     "Edit",
  227.     {    /* array: 6 elements */
  228.         "Undo", noIcon, "Z", noMark, plain,
  229.         "-", noIcon, noKey, noMark, plain,
  230.         "Cut", noIcon, "X", noMark, plain,
  231.         "Copy", noIcon, "C", noMark, plain,
  232.         "Paste", noIcon, "V", noMark, plain,
  233.         "Clear", noIcon, noKey, noMark, plain
  234.     }
  235. };
  236.  
  237. #define kEditHmnu hMenuBase+kEditMenu
  238. resource 'STR#' (kEditHmnu, purgeable) {{
  239.     /* 1 */    "The Edit menu has commands relating to editing text. It is here only for compatibility.",
  240.     /* 2 */    "Undo\n\nlets you undo your changes. Not implemented in this program.",
  241.     /* 3 */    "Cut\n\nlets you move your selection to the clipboard. Not implemented in this program.",
  242.     /* 4 */    "Copy\n\nlets you duplicate your selection in the clipboard. Not implemented in this program.",
  243.     /* 5 */    "Paste\n\nlets you replace your selection with the contents of the clipboard. Not implemented in this program.",
  244.     /* 6 */    "Clear\n\nlets you delete your selection. Not implemented in this program."
  245. }};
  246.  
  247. /* The 'hmnu' resource connects menu items to STR# items.
  248.  */
  249. resource 'hmnu' (kEditMenu, purgeable) {
  250.     HelpMgrVersion,
  251.     hmDefaultOptions,
  252.     0,    /* balloon def id */
  253.     0,    /* var code, hang right */
  254.     HMSkipItem {},    /* default item */
  255.     {
  256.     HMStringResItem {kEditHmnu, 1, kEditHmnu, 1, kEditHmnu, 1, kEditHmnu, 1 },
  257.     HMStringResItem {kEditHmnu, 2, kEditHmnu, 2, kEditHmnu, 2, kEditHmnu, 2 },
  258.     HMSkipItem {},
  259.     HMStringResItem {kEditHmnu, 3, kEditHmnu, 3, kEditHmnu, 3, kEditHmnu, 3 },
  260.     HMStringResItem {kEditHmnu, 4, kEditHmnu, 4, kEditHmnu, 4, kEditHmnu, 4 },
  261.     HMStringResItem {kEditHmnu, 5, kEditHmnu, 5, kEditHmnu, 5, kEditHmnu, 5 },
  262.     HMStringResItem {kEditHmnu, 6, kEditHmnu, 6, kEditHmnu, 6, kEditHmnu, 6 }
  263. }};
  264.  
  265. resource 'MENU' (kRandomDotMenu, "kRandomDotMenu") {
  266.     kRandomDotMenu,
  267.     textMenuProc,
  268.     kAllItems - (kItem1|kItem2|kItem3|kItem4),
  269.     enabled,
  270.     "Random Dot",
  271.     {    
  272.         "Gray Scale", noIcon, "1", noMark, plain,
  273.         "Black & White Stereogram", noIcon, "2", noMark, plain,
  274.         "Gray Scale Stereogram", noIcon, "3", noMark, plain,
  275.         "Shimmering Stereogram", noIcon, "4", noMark, plain
  276. }};
  277.  
  278. #define kRandomDotHmnu hMenuBase+kRandomDotMenu
  279. resource 'STR#' (kRandomDotHmnu, purgeable) {{
  280.     /* 1 */    "The RandomDot menu has commands relating to controlling this program.",
  281.     /* 2 */    "<configure dialog goes here>",
  282.     /* 3 */ "Gray Scale\n\nWhen this is checked, display depth information using shades of gray.",
  283.     /* 4 */    "Black & White Stereogram\n\nWhen this is checked, display depth information using black & white as the stereogram colors.",
  284.     /* 5 */    "Gray Scale Stereogram\n\nWhen this is checked, display depth information using shades of gray as the stereogram colors.",
  285.     /* 6 */    "Shimmering Stereogram\n\nWhen this is checked, display depth information using animated shades of gray as the stereogram colors."
  286. }};
  287.  
  288. /* The 'hmnu' resource connects menu items to STR# items.
  289.  */
  290. resource 'hmnu' (kRandomDotMenu, purgeable) {
  291.     HelpMgrVersion,
  292.     hmDefaultOptions,
  293.     0,    /* balloon def id */
  294.     0,    /* var code, hang right */
  295.     HMSkipItem {},    /* default item */
  296.     {
  297.     HMStringResItem {kRandomDotHmnu, 1, kRandomDotHmnu, 1, kRandomDotHmnu, 1, kRandomDotHmnu, 1 },
  298.     HMStringResItem {kRandomDotHmnu, 3, kRandomDotHmnu, 3, kRandomDotHmnu, 3, kRandomDotHmnu, 3 },
  299.     HMStringResItem {kRandomDotHmnu, 4, kRandomDotHmnu, 4, kRandomDotHmnu, 4, kRandomDotHmnu, 4 },
  300.     HMStringResItem {kRandomDotHmnu, 5, kRandomDotHmnu, 5, kRandomDotHmnu, 5, kRandomDotHmnu, 5 },
  301.     HMStringResItem {kRandomDotHmnu, 6, kRandomDotHmnu, 6, kRandomDotHmnu, 6, kRandomDotHmnu, 6 }
  302. }};
  303.  
  304. resource 'MBAR' (kMBAR, purgeable) {{
  305.         kAppleMenu,
  306.         kFileMenu,
  307.         kEditMenu,
  308.         kRandomDotMenu
  309. }};
  310.  
  311. resource 'STR#' (kMainStrs, purgeable) {{
  312.     "Random Dot Prefs",
  313.     "Opening “",
  314.     "”.",
  315.     "Computing Stereogram",    /* kComputingStereogramS */
  316.     "Save Image as:",        /* kSaveImageS */
  317.     "Save Stereogram as:",    /* kSaveStereoGramS */
  318.     "Random Dot Help…"        /* kOurHelpS */
  319. }};
  320.  
  321. resource 'STR#' (kErrorStrs, preload) {{
  322.     "An error occurred.",
  323.     "Directory full.",    /* kDirFulErr */    
  324.     "Disk full.",        /* kDskFulErr */    
  325.     "No such volume.",    /* kNsvErr */    
  326.     "I/O error.",        /* kIOErr */    
  327.     "Bad Name.",        /* kBdNamErr */    
  328.     "File not open.",    /* kFnOpnErr */    
  329.     "End of file.",        /* kEofErr */    
  330.     "Tried to position to before start of file (r/w).",    /* kPosErr */    
  331.     "Memory full (open) or file won't fit (load).",    /* kMFulErr */    
  332.     "Too many files open.",    /* kTmfoErr */    
  333.     "File not found.",    /* kFnfErr */    
  334.     "Diskette is write protected.",    /* kWPrErr */    
  335.     "File is locked.",    /* kFLckdErr */    
  336.     "Volume is locked.",    /* kVLckdErr */    
  337.     "File is busy (delete).",    /* kFBsyErr */    
  338.     "Duplicate filename. Probably can’t create output file because it already exists.",    /* kDupFNErr */    
  339.     "File already open with with write permission.",    /* kOpWrErr */    
  340.     "Refnum error.",    /* kRfNumErr */    
  341.     "Get file position error.",    /* kGfpErr */    
  342.     "Volume not on line error (was Ejected).",    /* kVolOffLinErr */    
  343.     "Permissions error (on file open).",    /* kPermErr */    
  344.     "Drive volume already on-line at MountVol.",    /* kVolOnLinErr */    
  345.     "No such drive (tried to mount a bad drive num).",    /* kNsDrvErr */    
  346.     "Not a mac diskette (sig bytes are wrong).",    /* kNoMacDskErr */    
  347.     "Nolume in question belongs to an external fs.",    /* kExtFSErr */    
  348.     "File system internal error:during rename the old entry was deleted but could not be restored.",    /* kFsRnErr */    
  349.     "Bad master directory block.",    /* kBadMDBErr */    
  350.     "Write permissions error.",    /* kWrPermErr */    
  351.     "Directory not found.",    /* kDirNFErr */    
  352.     "No free WDCB available.",    /* kTmwdoErr */    
  353.     "Move into offspring error.",    /* kBadMovErr */    
  354.     "Wrong volume type error [operation not supported for MFS].",    /* kWrgVolTypErr */    
  355.     "Server volume has been disconnected.",    /* kVolGoneErr */    
  356.     "Insufficient memory to complete operation. Use “Get Info” in the Finder to give this program more memory.",    /* kMemFullError */
  357.     "That port appears to be in use by another program.",     /* kPortInUse */
  358.     "The preferences file is not available.",    /* kClosedPreferences */
  359.     "This Pict file seems to be damaged.",     /* kBadPict */
  360.     "I don't know how to open this kind of file",    /* kBadFileType */
  361.     "This pgm file seems to be damaged.",    /* kBadPGMMagicNumber */
  362.     "I can only replace a Pict file.",        /* kPictOnly */
  363.     "This program needs Color Quickdraw and System 7 or later." /* kNeed7AndColor */
  364. }};
  365.  
  366.  
  367. resource 'BNDL' (128, purgeable) {
  368.     kCreator, 0, {
  369.     'FREF',    {
  370.             0, 128,
  371.             1, 129,
  372.             2, 130
  373.     },
  374.     'ICN#', {
  375.             0, 128,
  376.             1, 129,
  377.             2, 130
  378.         }
  379.     }
  380. };
  381.  
  382. type kCreator as 'STR ';
  383.  
  384.  
  385. resource kCreator (0, purgeable) {
  386.     "Copyright © 1994 David Phillip Oster"
  387. };
  388.  
  389. resource 'FREF' (128, purgeable) {
  390.     'APPL',
  391.     0,
  392.     ""
  393. };
  394.  
  395. resource 'FREF' (129, purgeable) {
  396.     kPrefType,
  397.     1,
  398.     ""
  399. };
  400.  
  401. resource 'FREF' (130, purgeable) {    /* so you can drop a PICT file on it */
  402.     'PICT',
  403.     2,
  404.     ""
  405. };
  406.  
  407.  
  408. type 'TEXT' { string; }; 
  409.  
  410. resource 'TEXT' (128) {
  411. "RandomDot: Version 1.0.2. A program to work with random dot stereograms"
  412. "Copyright © by David Phillip Oster, 1994, All Rights Reserved. Write to me at oster@netcom.com for more information."
  413. };
  414.  
  415. resource 'TEXT' (129) {
  416. "Table Of Contents\n"
  417. "-----------------\n"
  418. "Introduction\n"
  419. "Using SIRDS\n"
  420. "How to See SIRDS\n"
  421. "About This Macintosh Program\n"
  422. "Fiction About SIRDS\n"
  423. "\nIntroduction\n"
  424. "------------\n"
  425. "This program generates a “Single Image Random Dot Stereogram”, or SIRDS, from a "
  426. "Macintosh PICT file or a "
  427. "portable grey-map file that describes a 3D scene.  A SIRDS is an image which, "
  428. "when viewed in the appropriate way, appears to the brain as a 3D scene. The "
  429. "image is a stereogram composed of seemingly random dots.  The program "
  430. "incorporates a new, simple, and symmetric algorithm for generating such images "
  431. "from a solid model.  It improves on previous algorithms in several ways: "
  432. "it is symmetric and hence free from directional left-to-right or "
  433. "right-to-left bias, it corrects a slight distortion in the rendering of depth, "
  434. "it removes hidden parts of surfaces, and it also eliminates a type of artifact "
  435. "that we call an “echo.”\n\n"
  436.  
  437. "The program is described in Working Paper 1993/2 of the Department of Computer "
  438. "Science, University of Waikato, Hamilton, New Zealand.  (This report can be "
  439. "obtained from ftp.cs.waikato.ac.nz.)\n\n"
  440.  
  441.  
  442. "Using SIRDS\n"
  443. "-----------\n"
  444. "SIRDS reads and writes PICT files and 256 level PGM files.  A level of 0 (black), "
  445. "corresponds to a z-level of 0.0 (the far plane) through to level 255 (white) "
  446. "corresponding to a z-level of 1.0 (the near plane).\n\n"
  447.  
  448. "To see your first Single Image Random Dot Stereogram, use the ‘Open’ menu item "
  449. "to select a PICT or a PGM file.  A few examples come with the distribution, mainly the "
  450. "examples given in our paper.\n\n"
  451.  
  452. "As soon as you have selected a file, the program will automatically generate "
  453. "a SIRDS based on our symmetric algorithm -- with hidden line removal. "  
  454. "This mode is termed the ‘linked (h/s)’ approach in our paper."
  455. "This Macintosh program only generates stereograms with hidden lines removed.\n\n"
  456.  
  457. "‘mu’ is the distance that the "
  458. "near plane is closer to the eyes than the far plane.  By default this "
  459. "value is 0.33 (~= 1/3) This Macintosh program does not allow you to change ‘mu’.\n\n"
  460.  
  461. "You can save the SIRDS as a PICT file and you can print it.\n\n"
  462.  
  463. "Shimmering is approximated by choosing the ‘Shimmer’ menu choice.  This will "
  464. "take the gray scale SIRDS and animate the palette. This "
  465. "only works if your display is set for 256 colors. {An IBM-PC program is also available, this only "
  466. "demonstrates the SHIMMERing effect and is called “shimmer.zip”, available " 
  467. "at the above site}\n\n"
  468.  
  469.  
  470. "How to See SIRDS\n"
  471. "----------------\n"
  472. "This program generates stereograms to be viewed while going wall-eyed (or "
  473. "boss-eyed), this is where you focus twice past the screen (look for the "
  474. "reflection of your nose...).  The two dots at bottom of the "
  475. "window aid in viewing the object.\n\n"
  476.  
  477. "Looking at the two dots, try and focus past the screen; you will initially "
  478. "see 4 dots, if you look further away these dots will converge into 3.  As you "
  479. "stare at the centre dot an object will slowly appear (The time required for "
  480. "this step varies on the person, from 1 second to 10 minutes).  {If you are "
  481. "equally short-sighted in both eyes, removal of your glasses may help…}\n\n"
  482.  
  483. "I find that Cup and Hemisphere are the easiest files for a first time viewer to see.\n\n"
  484.  
  485. "The ‘Shimmering’ option also helps to ‘lock onto’ the image, as the "
  486. "cycling colours do not allow you to focus on the plane of the screen.\n\n"
  487.  
  488. "About This Macintosh Program\n"
  489. "----------------------------\n"
  490. "This program is by David Phillip Oster. Since it is based on work placed in "
  491. "the open literature by Harold W. Thimbleby, Stuart Inglis, & Ian H. Witten, "
  492. "the source code is available for any use with only the following restriction:\n\n"
  493. "you may use this source code any way you like, but you may not forbid anyone else "
  494. "from also using the source code.\n\n"
  495. "The source is available at: ftp://ftp.netcom.com/~ftp/pub/oster/SIRDS\n\n"
  496. "This program compiles under THINK C 7, and Metrowerks.\n\n"
  497. "This program is a fat binary, so it runs at full speed on 68000 and PowerPC based "
  498. "Macintoshs. It has Balloon Help. This program runs best if you set your display to "
  499. "‘Millions of Colors’ or to ‘256 colors’. Shimmering only works in 256 colors.\n\n"
  500. "Fiction about SIRDS\n"
  501. "-------------------\n"
  502. "I recommend the novel “Snow Crash” by Neal Stephenson, Bantam Books, 1992, a cyberpunk novel about a "
  503. "cyberspace designed according to the Macintosh User Inteface Guidelines. The plot "
  504. "involves patterns that look to the uninitiated like mere white noise, but the trained "
  505. "mind finds meaning so compelling in the patterns, that the human mind actually crashes, "
  506. "becomes incapable of doing anything else, after perceiving the meaning in the patterns."
  507. };
  508.  
  509. resource 'hfdr' (-5696) {
  510.     HelpMgrVersion, hmDefaultOptions, 0, 0,
  511.     {
  512.         HMTEResItem{ 128 }
  513. }};
  514.  
  515. resource 'vers' (1, purgeable) {
  516.     0x1,
  517.     0x2,
  518.     final,
  519.     0x0,
  520.     verUS,
  521.     "Copyright © 1994 by David Phillip Oster, Version 1.0.2",
  522.     "Version 1.0.2"
  523. };
  524.  
  525.  
  526.